package in.rob.client.fragment;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import java.util.ArrayList;
import java.util.List;
import in.lib.Constants;
import in.lib.adapter.AccountAdapter;
import in.lib.builder.DialogBuilder;
import in.lib.manager.UserManager;
import in.lib.utils.Views;
import in.lib.utils.Views.InjectView;
import in.lib.utils.Views.Injectable;
import in.lib.utils.Views.OnClick;
import in.lib.view.AvatarImageView;
import in.model.User;
import in.rob.client.AuthenticationActivity;
import in.rob.client.ChannelsActivity;
import in.rob.client.DraftsActivity;
import in.rob.client.MainActivity;
import in.rob.client.ProfileActivity;
import in.rob.client.R;
import in.rob.client.SearchActivity;
import in.rob.client.SettingsActivity;
import in.rob.client.StarredActivity;
import lombok.Getter;
@Injectable
public class NavigationFragment extends Fragment
{
@InjectView private AvatarImageView avatar;
@Getter private Context context;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.navigation_layout, container, false);
Views.inject(this, view);
return view;
}
@Override public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
context = getActivity();
if (UserManager.getInstance().getUser() != null)
{
avatar.setUser(UserManager.getInstance().getUser(), true);
}
}
@OnClick public void onAvatarClick(View view)
{
List<String> users = UserManager.getInstance().getLinkedUserIds();
final ArrayList<User> loadedUsers = new ArrayList<User>();
for (int index = 0; index < users.size(); index++)
{
User u = new User().load(users.get(index));
if (u != null)
{
loadedUsers.add(u);
}
}
if (loadedUsers.size() < 1)
{
loadedUsers.add(UserManager.getInstance().getUser());
}
DialogBuilder.create(getContext())
.setTitle(getString(R.string.select_account))
.setAdapter(new AccountAdapter(getContext(), loadedUsers), new DialogInterface.OnClickListener()
{
@Override public void onClick(DialogInterface dialog, int which)
{
if (UserManager.getInstance().getUser().equals(loadedUsers.get(which)))
{
Intent main = new Intent(getContext(), ProfileActivity.class);
getContext().startActivity(main);
}
else
{
UserManager.getInstance().selectUser(loadedUsers.get(which));
Intent main = new Intent(getContext(), MainActivity.class);
main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
main.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
main.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getContext().startActivity(main);
}
}
})
.setPositiveButton(R.string.add_account, new OnClickListener()
{
@Override public void onClick(DialogInterface dialog, int which)
{
Intent loginIntent = new Intent(getContext(), AuthenticationActivity.class);
loginIntent.putExtra(Constants.EXTRA_NEW_USER, true);
startActivity(loginIntent);
}
})
.setNegativeButton(R.string.close, null)
.show();
}
@OnClick public void onTimelineClick(View view)
{
boolean closeMenu = false;
if (getActivity() instanceof MainActivity)
{
closeMenu = true;
((MainActivity)getActivity()).setPage(0);
}
else
{
closeMenu = true;
Intent homeIntent = new Intent(getContext(), MainActivity.class);
homeIntent.putExtra(Constants.EXTRA_START_PAGE, 0);
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(homeIntent);
}
if (closeMenu && getActivity() instanceof SlidingFragmentActivity)
{
((SlidingFragmentActivity)getActivity()).showContent();
}
}
@OnClick public void onMentionsClick(View view)
{
boolean closeMenu = false;
if (getActivity() instanceof MainActivity)
{
closeMenu = true;
((MainActivity)getActivity()).setPage(1);
}
else
{
closeMenu = true;
Intent homeIntent = new Intent(getContext(), MainActivity.class);
homeIntent.putExtra(Constants.EXTRA_START_PAGE, 1);
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(homeIntent);
}
if (closeMenu && getActivity() instanceof SlidingFragmentActivity)
{
((SlidingFragmentActivity)getActivity()).showContent();
}
}
@OnClick public void onChannelsClick(View view)
{
Intent channelsIntent = new Intent(getContext(), ChannelsActivity.class);
getActivity().startActivity(channelsIntent);
}
@OnClick public void onDraftsClick(View view)
{
Intent draftsIntent = new Intent(getContext(), DraftsActivity.class);
getActivity().startActivity(draftsIntent);
}
@OnClick public void onProfileClick(View view)
{
Intent profileIntent = new Intent(getContext(), ProfileActivity.class);
profileIntent.putExtra(Constants.EXTRA_USER, (Parcelable)UserManager.getInstance().getUser());
getActivity().startActivity(profileIntent);
}
@OnClick public void onStarredClick(View view)
{
Intent starredIntent = new Intent(getContext(), StarredActivity.class);
getActivity().startActivity(starredIntent);
}
@OnClick public void onSearchClick(View view)
{
Intent searchIntent = new Intent(getContext(), SearchActivity.class);
getActivity().startActivity(searchIntent);
}
@OnClick public void onSettingsClick(View view)
{
Intent settingsIntent = new Intent(getContext(), SettingsActivity.class);
getActivity().startActivity(settingsIntent);
}
}